﻿using System;
using System.Web.UI.WebControls;
using Z16.BLI;
using System.Data;

namespace Z16.SITE
{
    public partial class CalculadoraTeste : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                CarregarCamada(null);
                CarregarComplexidade();

                Session["dt"] = null;
                Session["cont"] = null;
            }
        }

        protected float Calcular(int codCamada, int codComplexidade, float valor)
        {
            float total = 0;

            Atividade at = new Atividade();
            total = at.CalcularComplexidade(codCamada, codComplexidade, valor);

            return total;
        }

        protected void CarregarCamada(int? codCamada)
        {
            Camada camada = new Camada();

            ddlCamada.Items.Clear();
            ddlCamada.AppendDataBoundItems = true;
            ddlCamada.Items.Insert(0, "Selecione");

            ddlCamada.DataSource = camada.ListarCamadas(null, null);
            ddlCamada.DataValueField = "Cod_Camada";
            ddlCamada.DataTextField = "Nome_Camada";
            ddlCamada.DataBind();

            if (codCamada != null)
                ddlCamada.SelectedIndex = codCamada.Value;

        }

        protected void CarregarComplexidade()
        {
            Complexidade complexidade = new Complexidade();

            ddlComplexidade.Items.Clear();
            ddlComplexidade.AppendDataBoundItems = true;
            ddlComplexidade.Items.Insert(0, "Selecione");

            ddlComplexidade.DataSource = complexidade.ListarComplexidade(null, null);
            ddlComplexidade.DataValueField = "Cod_Complexidade";
            ddlComplexidade.DataTextField = "Nome_Complexidade";
            ddlComplexidade.DataBind();

        }

        protected void btnADD_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(ddlComplexidade.SelectedValue) && !string.IsNullOrEmpty(ddlCamada.SelectedValue) &&
                !string.IsNullOrEmpty(txtValor.Text))
            {
                int cont;
                if (Session["cont"] != null)
                    cont = int.Parse(Session["cont"].ToString());
                else
                    cont = 0;
                cont++;

                DataTable dt = new DataTable();
                if (Session["dt"] != null)
                {
                    dt = (DataTable) Session["dt"];
                }
                else
                {
                    dt.Columns.Add(new DataColumn("Id"));
                    dt.Columns.Add(new DataColumn("Cod_Camada"));
                    dt.Columns.Add(new DataColumn("Camada"));
                    dt.Columns.Add(new DataColumn("Cod_Complexidade"));
                    dt.Columns.Add(new DataColumn("Complexidade"));
                    dt.Columns.Add(new DataColumn("qtd"));
                }

                DataRow row = dt.NewRow();
                row["Id"] = cont;
                row["Cod_Camada"] = ddlCamada.SelectedValue;
                row["Camada"] = ddlCamada.SelectedItem;
                row["Cod_Complexidade"] = ddlComplexidade.SelectedValue;
                row["Complexidade"] = ddlComplexidade.SelectedItem;
                row["qtd"] = txtValor.Text;
                dt.Rows.Add(row);

                gvValores.DataSource = dt;
                gvValores.DataBind();

                Session["dt"] = dt;
                Session["cont"] = cont;
            }
        }

        protected void btnCalcular_Click(object sender, EventArgs e)
        {
            var total = 0.0f;
       
            if (gvValores.Rows.Count > 0)
            {
                DataTable dt = new DataTable();
                dt = (DataTable) Session["dt"];
                if (dt.Rows.Count > 0)
                {
                    DataSet dsListaSaldo = new DataSet();
                    foreach (DataRow row in dt.Rows)
                    {
                        int codCamada = int.Parse(row["Cod_Camada"].ToString());
                        int codComplexidade = int.Parse(row["Cod_Complexidade"].ToString());
                        float qtd = float.Parse(row["qtd"].ToString());

                        total = total + Calcular(codCamada, codComplexidade, qtd);
                    }
                }
            }

            txtTotal.Text = total.ToString();
        }

        protected void gvValores_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Excluir")
            {
                int id = Convert.ToInt32(e.CommandArgument);
                DataTable dt = (DataTable)Session["dt"];

                foreach (DataRow row in dt.Rows)
                {
                    if (int.Parse(row["Id"].ToString()) == id)
                    {
                        row.Delete();
                        break;
                    }
                }

                gvValores.DataSource = dt;
                gvValores.DataBind();

                Session["dt"] = dt;
            }
        }
    }
}